#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
#include <fcntl.h>


int main()
{
    int fd[2];
    if(pipe(fd) < 0)
    {
        perror("pipe");
        return -1;
    }
    int fd2[2];
    if(pipe(fd2) < 0)
    {
        perror("pipe");
        return -1;
    }

    pid_t pid = fork();
    if(pid < 0)
    {
        perror("fork");
        return -1;
    }
    if(pid == 0)
    {
        while(1)
        {
            char msg[32] = {0};
            printf("这是子进程,子进程输入的数据:");
            scanf("%s",msg);
            while(getchar() != '\n');
            write(fd[1],msg,sizeof(msg));

            memset(msg,0,32);
            read(fd2[0],msg,32);
            printf("子进程从父进程读到的数据:%s\n",msg);
        }
        
    }
    else
    {
        while(1)
        {
            fcntl(fd[0],F_SETFL,0);
            char msg[32] = {0};
            read(fd[0],msg,32);
            printf("父进程接收到的数据:%s\n",msg);

            memset(msg,0,32);
            printf("这是父进程,父进程输入的数据:");
            scanf("%s",msg);
            while(getchar() != '\n');
            write(fd2[1],msg,32);

        }
    }
    return 0;
}